// utils/asyncRoutes.js
import router from '@/router'

// 组件映射表
const componentMap = {
    'mainpage': () => import('@/views/Dashboard.vue'),
    'User': () => import('@/views/User.vue')
    // 其他组件...
}

// 转换后端路由为前端路由格式
export function transformRoutes(backendRoutes) {
    return backendRoutes.map(route => {
        return {
            path: route.path,
            component: componentMap[route.component],
            meta: route.meta
        }
    })
}

// 加载动态路由
export async function loadRoutes() {
    try {
        // 1. 从后端获取路由配置
        const response = await axios.get('/api/routes')

        // 2. 转换路由格式
        const dynamicRoutes = transformRoutes(response.data)

        // 3. 添加动态路由
        dynamicRoutes.forEach(route => {
            router.addRoute(route)
        })

        // 4. 添加404路由（必须放在最后）
        router.addRoute({ path: '/:pathMatch(.*)', redirect: '/404' })

        return true
    } catch (error) {
        console.error('加载路由失败:', error)
        return false
    }
}